package com.demo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.demo.pojo.entity.Admin;
import com.demo.pojo.dto.AdminListDTO;

import java.util.List;
import java.util.Map;

/**
 * 管理员服务接口
 */
public interface AdminService {
    
    /**
     * 分页查询管理员列表
     * @param page 分页参数
     * @param adminNo 管理员账号（可选）
     * @param adminName 管理员姓名（可选）
     * @param adminRole 角色（可选）
     * @param adminStatus 状态（可选）
     * @return 分页结果
     */
    IPage<AdminListDTO> getAdminList(Page<Admin> page, String adminNo, String adminName, String adminRole, Integer adminStatus);
    
    /**
     * 根据ID查询管理员
     * @param id 管理员ID
     * @return 管理员信息
     */
    Admin getAdminById(Long id);
    
    /**
     * 根据管理员账号查询
     * @param adminNo 管理员账号
     * @return 管理员信息
     */
    Admin getAdminByNo(String adminNo);
    
    /**
     * 管理员登录
     * @param adminNo 管理员账号
     * @param password 密码
     * @return 管理员信息
     */
    Admin login(String adminNo, String password);
    
    /**
     * 添加管理员
     * @param admin 管理员信息
     * @return 是否成功
     */
    boolean addAdmin(Admin admin);
    
    /**
     * 更新管理员信息
     * @param admin 管理员信息
     * @return 是否成功
     */
    boolean updateAdmin(Admin admin);
    
    /**
     * 删除管理员
     * @param id 管理员ID
     * @return 是否成功
     */
    boolean deleteAdmin(Long id);
    
    /**
     * 删除管理员（通过账号）
     * @param adminNo 管理员账号
     * @return 是否成功
     */
    boolean deleteAdminByNo(String adminNo);
    
    /**
     * 批量删除管理员
     * @param ids 管理员ID列表
     * @return 是否成功
     */
    boolean deleteAdmins(List<Long> ids);
    
    /**
     * 获取系统统计数据
     * @return 统计数据Map（studentCount, teacherCount, clazzCount, courseCount等）
     */
    Map<String, Object> getSystemStats();
}
